This application is related to the following co-pending and commonly-assigned patent applications, all of which are filed on the same date herewith, and all of which are incorporated herein by reference in their entirety:
xe2x80x9cMethod, System, Program, and Data Structure For Selecting a Preferred Path to a Storage Devicexe2x80x9d, to David A. Burton and Robert L. Morton, having Ser. No. 09/561,639, and
xe2x80x9cMethod, System, and Program for Updating Firmware to a Storage System Comprised of Multiple Controllersxe2x80x9d, to David A. Burton and Robert L. Morton, having Ser. No. 09/563,656.
1. Field of the Invention
The present invention relates to a system, method, and program for defining preferred paths for a computer to use to send commands to execute with respect to storage regions in a storage device that are accessible through at least two controllers.
2. Description of the Related Art
In prior art storage systems, one or more host computers access a storage space maintained in a storage device through a storage controller. In mass storage systems, the storage device may comprise one or more Direct Access Storage Devices (DASDs), comprised of interconnected hard disk drives. The storage controller manages the flow of data from host systems to DASDs. Host systems view the physical storage space as a partition of Logical Unit Numbers (LUNs). The hosts will submit input/output (I/O) commands to a particular LUN, and the storage controller will translate the target LUN to a physical storage area.
To avoid total system failure in the event that one system component fails, storage controller subsystems incorporate redundant hardware components. For instance, one typical prior art storage subsystem includes multiple storage controller processors to provide hosts multiple paths to the same DASD and LUNs. In the event that one storage controller path fails, the path to the other storage controller can be used to access the DASD.
In high end storage controllers, such as the International Business Machines Corporation (IBM) 3990 and Enterprise System Storage Server,** a host may send an input/output (I/O) command to any host or controller I/O adaptor in the subsystem and the I/O adaptor would then route the I/O to the controller handling the target LUN of that I/O operation. With such prior art high end systems, the host does not need to know the controller that is primarily managing a particular LUN because the controllers include the interface circuitry to route the I/O to the primary controller. Such solutions require expensive interface hardware that is not feasible for lower cost storage subsystems.
Lower cost storage subsystems also use two controllers, such as Small Computer System Interface (SCSI) or Fibre Channel controllers, that provide separate paths to the same DASD. However, such systems do not include the interface circuitry and added ports used in the higher end controllers that allow the controllers to route I/Os between the controllers. Instead, with the lower cost storage subsystems, the host will select a path to a storage controller for the I/O operation and could alternate between controllers to reach the LUN. The problem with the solution in the lower cost models is that the storage controllers need to communicate to coordinate the execution of I/O operations against the same LUN to ensure that data consistency is maintained, i.e., a controller with a later instance of data does not write to the same storage location as the other controller which includes an earlier instance of the data. Such cross-controller communications use high latency communication paths to coordinate I/O operations. These coordination activities can introduce significant overhead into the I/O execution process and adversely affect the response time for all I/O operations in the subsystem.
Another prior art solution involves adding a port to each of the controllers in the subsystem. Each added port is linked to the port on the other controller that receives the I/O commands. For instance, the subsystem may include controller 0 having ports A and B and controller 1 having ports C and D. Ports A and C are used for I/O operations and port B is linked to port C and port D is linked to port A. If one of the controllers fails, then the linked port on the other controller will pick up the I/O operation from the failed controller. For instance, if controller 0 fails, then port D on controller 1 will take the I/O from port A on controller 0. The disadvantages of this solution are the cost required for the extra ports used for failover situations and that the design addresses only controller failures. If there was a failure in the path upstream of the controller, such as at the hub or cable, then the host could never reach the controller port.
Thus, there is a need in the art for an improved mechanism for selecting the appropriate I/O path that reduces system overhead in processing I/O commands and provides for a failover and failback in the event of a failure along the path to one of the controllers.
To overcome the limitations in the prior art described above, preferred embodiments disclose a method, system, and program for defining paths for a computer to use to send commands to execute with respect to storage regions in a storage device that are accessible through at least two controllers. For each storage region, one controller is designated as a preferred controller and another as a non-preferred controller. The computer initially sends a command to be executed with respect to a target storage region to the preferred controller for the target storage region and sends the command to the non-preferred controller for the target storage region if the preferred controller cannot execute the command against the target storage region. In response to the non-preferred controller receiving at least one command for the target storage region, the designation is modified to make a current preferred controller the non-preferred controller for the target storage region and a current non-preferred controller the preferred controller for the target storage region.
In further embodiments, information is maintained on a number of commands sent to the preferred controller and non-preferred controller for one target storage region. A determination is made as to whether a non-preferred value related to a number of commands sent to the non-preferred controller for the target storage region exceeds a threshold with respect to a preferred value related to a number of commands sent to the preferred controller for the target storage region. The designation is modified for the target storage region if the threshold is exceeded.
In still further embodiments, the preferred and non-preferred values are incremented by a first value for each read command and a second value for each write command. Still further, the first value may be greater than the second value.
Preferred embodiments provide a methodology for assigning default paths through one of two storage controllers for hosts to use to access a storage region. A failure that occurs in the communication line or fabric between the host and controller, but not a failure in the preferred controller, may cause the host to direct commands for a storage region to the non-preferred controller. In such case, the non-preferred controller will have to communicate with the preferred controller to coordinate execution of the command against the target storage area. Such coordination activity can significantly increase processor overhead for the controllers, thereby degrading system performance.
To address this problem associated with a preferred path designation, preferred embodiments provide a mechanism for altering the preferred controller designation for a storage region if the hosts are tending to send commands for the storage region to the non-preferred controller. After switching the preferred controller designation, the controller will receive the commands as the preferred controller, where previously the controller was receiving the commands as the non-preferred controller. Once the controller is designated as the preferred controller, the controller can execute the commands against the storage region without communicating and coordinating with the other controller, thereby avoiding the performance degradation that necessarily results from such coordination activities.